package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * 域 125  QR    二维码场景标识
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F125_QR_FlagEnum {
    _100("100", "被扫消费即持卡人在商户端通过被扫的方式发起的消费交易"),
    _110("110", "被扫预授权即持卡人在商户端通过被扫的方式发起的预授权交易"),
    _210("210", "主扫一般商户消费即持卡人在一般商户端通过主扫的方式发起的消费交易"),
    _211("211", "主扫消费（限借记卡）即持卡人通过主扫的方式发起的限定非贷记帐户支付的消费，例如购买理财产品"),
    _220("220", "主扫ATM取现"),
    _212("212", "主扫小微商户消费即持卡人在小微商户端通过主扫的方式发起的消费交易"),
    _214("214", "一般消费（收款方T+0入账）"),
    _215("215", "限定非贷记账户支付的消费（收款方T+0入账）"),
    _216("216", "个人面对面收款"),
    _231("231", "主扫人到人二维码付款（贷记交易）即转出人通过主扫的方式发起转账业务中，经银联拆分后的入账交易,使用贷记交易实现"),
    _232("232", "主扫人到人二维码付款（扣款交易）"),
    _240("240", "主扫预授权即持卡人在一般商户端通过主扫的方式发起的预授权交易"),
    ;

    private String code;
    private String desc;

    F125_QR_FlagEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F125_QR_FlagEnum find(String code) {
        F125_QR_FlagEnum result = Arrays.stream(F125_QR_FlagEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
